package com.hundsun.cprs.yyt.util;

import java.math.BigDecimal;

public class BigDecimalUtil {

	
	public static BigDecimal add(BigDecimal d1, BigDecimal d2) {
		// 进行加法运算
		return d1.add(d2).setScale(2,BigDecimal.ROUND_FLOOR);
	}

	public static BigDecimal sub(BigDecimal d1, BigDecimal d2) {
		// 进行减法运算
		return d1.subtract(d2).setScale(2,BigDecimal.ROUND_FLOOR);
	}

	public static BigDecimal mul(BigDecimal d1, BigDecimal d2,int roundingMode) {
		// 进行乘法运算
		return d1.multiply(d2).setScale(2,roundingMode);
	}
	/**
	 * 相乘后，取整数
	 * @param d1
	 * @param d2
	 * @return
	 */
	public static BigDecimal mulToInt(BigDecimal d1, BigDecimal d2,int roundingMode) {
		return d1.multiply(d2).setScale(0,roundingMode);
	}
	public static BigDecimal mul(BigDecimal d1, BigDecimal d2) {
		// 进行乘法运算
		return d1.multiply(d2).setScale(2,BigDecimal.ROUND_FLOOR);
	}

	public static BigDecimal div(BigDecimal d1, BigDecimal d2) {
		// 进行除法运算
		return d1.divide(d2).setScale(2,BigDecimal.ROUND_FLOOR);
	}
	public static BigDecimal div(BigDecimal d1, BigDecimal d2,int roundingMode) {
		// 进行除法运算
		return d1.divide(d2).setScale(2,roundingMode);
	}

	public static BigDecimal add(double d1, double d2) {
		// 进行加法运算
		BigDecimal b1 = new BigDecimal(d1);
		BigDecimal b2 = new BigDecimal(d2);
		return b1.add(b2).setScale(2,BigDecimal.ROUND_FLOOR);
	}

	public static BigDecimal sub(double d1, double d2) {
		// 进行减法运算
		BigDecimal b1 = new BigDecimal(d1);
		BigDecimal b2 = new BigDecimal(d2);
		return b1.subtract(b2).setScale(2,BigDecimal.ROUND_FLOOR);
	}

	public static BigDecimal mul(double d1, double d2) {
		// 进行乘法运算
		BigDecimal b1 = new BigDecimal(d1);
		BigDecimal b2 = new BigDecimal(d2);
		return b1.multiply(b2).setScale(2,BigDecimal.ROUND_FLOOR);
	}
	
	public static BigDecimal mul(double d1, double d2,int roundingMode) {
		// 进行乘法运算
		BigDecimal b1 = new BigDecimal(d1);
		BigDecimal b2 = new BigDecimal(d2);
		return b1.multiply(b2).setScale(2,roundingMode);
	}
	public static BigDecimal divide(double d1, double d2) {
		// 进行乘法运算
		BigDecimal b1 = new BigDecimal(d1);
		BigDecimal b2 = new BigDecimal(d2);
		return b1.divide(b2).setScale(2,BigDecimal.ROUND_CEILING);
	}

	public static BigDecimal div(double d1, double d2, int len) {
		// 进行除法运算
		BigDecimal b1 = new BigDecimal(d1);
		BigDecimal b2 = new BigDecimal(d2);
		return b1.divide(b2,len).setScale(2,BigDecimal.ROUND_FLOOR);
	}

	public static BigDecimal round(double d, int len) {
		// 进行四舍五入 操作
		BigDecimal b1 = new BigDecimal(d);
		BigDecimal b2 = new BigDecimal(1);
		// 任何一个数字除以1都是原数字
		// ROUND_FLOOR是BigDecimal的一个常量，表示进行舍弃小数位操作
		return b1.divide(b2,len).setScale(2,BigDecimal.ROUND_FLOOR);
	}
}
